This invention relates to the dissemination of information in networked computer software, specifically for the purposes of distributed session management, that is, the management of participating users and software modules in a distributed computing environment.
It is common modern software practice to develop software applications which are distributed. Examples of such applications range from video conferencing systems to virtual environments and 3D games. Typically, when a distributed software application is running, it manifests itself as a collection of software applications, with each application running on a workstation connected to the public Internet. The public Internet may be considered to operate as a wide area network (WAN). In our discussion here the term xe2x80x9cend-pointxe2x80x9d will be used to refer to a particular application executing on a single workstation.
These distributed software applications group each end-point into a conference of end-points. Here the term xe2x80x9cconferencexe2x80x9d refers to the logical grouping of the end-points. The establishing of this conference of end-points is a complex process due to the simplicity of the underlying WAN protocols. Furthermore, once end-points are grouped into a conference it is necessary to communicate state and configuration data of the end-point applications between each participant. Once again this is a complex task to perform reliably and efficiently.
In these applications a xe2x80x9csession-managerxe2x80x9d software component is usually employed. This software component is responsible for identifying and monitoring the participants in the conference and can also be made responsible for communicating the state and configuration information between end-points. Traditionally session-manager implementations suffer from many flaws that we have overcome in our invention.
The session-manager approach was used in the MBONE project in early 1990 as presented by Hans Ericksson in xe2x80x9cMBonexe2x80x94The Multi-cast Backbone, INET 1993. In the MBONE project a xe2x80x9csession directoryxe2x80x9d application was provided which managed the list of people with whom one might communicate using the IP multicast standard. Numerous protocols such as the session announcement protocol (SAP) and the session initiation protocol (SIP) were employed in this implementation. This manifestation of session management was very simple and included only the most basic information about the user such as a name and a location. It did not include any information regarding the user""s application or any information about other forms of communication open between users. Also it did not operate as a readily usable process for applications to use for session management.
Most xe2x80x9csession-managementxe2x80x9d applications generally execute as external processes on all computer workstations that are participants in collaborative network sessions. The main application software will communicate with the xe2x80x9csession-managerxe2x80x9d to advertise its presence to the other participants of a conference or to announce the existence of a new conference. (In our terminology here a xe2x80x9cconferencexe2x80x9d refers to a logical grouping of end-point applications on the same WAN). When an end-point application terminates or disconnects from the conference the xe2x80x9csession-managerxe2x80x9d is also responsible for announcing this fact to the other participants.
In most applications the use of the xe2x80x9csession-managerxe2x80x9d to locate other participants and to announce one""s presence is only a first step. Normally this will be the prerequisite for initiating some other form of communication between the known participants. An example of this would be a video conferencing application where once the participants in the videoconference are known, a digital video signal is generated from numerous end-points and is communicated to all other end-points. In order to generalize and automate the initiation of this other form of communication it is necessary to communicate its parameters and its nature between the participants. This type of xe2x80x9cextendedxe2x80x9d behavior is not provided by most session manager implementations and this is the focal point in the design of our system.
Most early systems that required session management used a client-server approach, as maintaining data at a single source obviates the need for complex arbitration or locking techniques. However these client-server based systems suffer from numerous disadvantages such as:
(a) Low error tolerancexe2x80x94if the server fails then everything fails.
(b) Lack of scalabilityxe2x80x94all participants need to communicate to the same network end-point. When the number of participants exceeds a threshold the communication becomes prohibitively slow and eventually impossible.
The reliability and scalability problems of the centralized session managers can be overcome using distributed session managers. Examples of this approach are:
U.S. Pat. No. 5,748,618 to Rothrock (1998) discloses a mechanism for arbitration in a distributed data conferencing system for accessing shared data stored using a hierarchical representation. The patent is concerned with sharing visual data in small-scale (not suffering from the disadvantages mentioned above) collaborative environments and does not consider scalability issues of moving to larger systems as well as generalized data distribution between conference participants.
Similarly U.S. Pat. No. 5,634,010 to Ciscon (1997) addresses solely the communication of data between external processes. No consideration is given to the greater problem of identifying external processes and logically grouping them into conferences.
Some software systems (for example the Nexus system for developing applications, described in I. Foster, C. Kesselman, S. Tuecke, xe2x80x9cThe Nexus Approach to Integrating Multithreading and Communicationxe2x80x9d, Journal of Parallel and Distributed Computing, 37:70-82, 1996), provide session-management functionality.
None of the prior-art session managers in both completely distributed and completely extensible. Session managers with these characteristics are required to support modern collaborative network software. Problems in the design of completely distributed session managers include the division of session management tasks between the end point and the session manager, the amount of state maintained in each session manager, and avoiding deadlock and race conditions in making changes in the session managers. Problems in the design of easily extensible session managers include making it possible to add new kinds of applications and conferences or use the session manager on different platforms without having to redesign the session manager. It is an object of the invention disclosed herein to overcome these problems and provide a completely distributed, completely scalable, and completely extensible session management system.
The session manager of the invention provides a completely distributed session management system by maintaining session manager conference state that ensures that each end point in a conference has a current copy of the endpoint conference state for the conference. A given session manager provides any changes made by its endpoint in the endpoint conference state to the session managers for the other endpoint and provides any changes in the endpoint conference state that it receives from other session managers to its endpoint. A distributed locking mechanism in the session manager conference state ensures that the given session manager sends changes to the other session managers only when all of the other session managers are ready to receive them. Complete scalability is achieved because a given session manager contains session manager conference state only for those conferences that have endpoints on the computer system in which the session manager is executing.
In another aspect of the invention, the session manager maintains a complete copy of the endpoint conference state in the session manager conference state. Where the endpoint conference state is hierarchical, the copy in the session manager conference state uses a representation of the hierarchy which remains valid when part or all of the copy of the endpoint conference state is provided to another session manager.
When an endpoint wishes to join a conference, all that is required is that its session manager obtain a copy of the session manager conference state from another session manager and provide the endpoint conference state in the copy to its endpoint. When an endpoint establishes a conference, the endpoint makes the endpoint conference state for the conference, the session manager makes session manager conference state for the conference including the endpoint conference state, and when another endpoint joins the conference, the session manager provides its session manger conference state to that endpoint""s session manager.
The session manager of the invention is completely extensible because the operations it performs are restricted to incorporating changes in the endpoint""s endpoint conference state into the session manager conference state for the conference, providing the changes in the session manager conference state to the session managers of the conference""s other endpoints, receiving changes from the other session managers, incorporating them into the session manger conference state, providing changes in the endpoint conference state portion of the session manager conference state to the endpoint for incorporation into the endpoint conference state, and using the locking mechanism to ensure that each session manager""s copy of the session manager conference state is the same as that of all the others. The session manager thus need have no knowledge whatever of the details of the endpoint""s endpoint conference state.
The session manager is further independent of changes in endpoints, conferences, and platforms because it employs a representation for the session manager conference state which can represent any form of endpoint conference state. A translator running in the endpoint translates endpoint conference state into the proper form for the session manager conference state and vice-versa. In a preferred embodiment, the representation is XML, with translation to and from XML for a particular combination of conference, endpoint, and platform being defined by a DTD for the combination that is accessible to the translator.